package router

import (
	"booking/common/utils"
	"booking/internal/admin/handler"
	"booking/internal/admin/handler/admin"
	"booking/internal/admin/handler/agent"
	"booking/internal/admin/handler/order"
	"booking/internal/admin/handler/public"
	"booking/internal/admin/middleware"

	"github.com/gin-gonic/gin"
)

func Router() *gin.Engine {
	r := gin.Default()
	r.GET("test", func(r *gin.Context) {
		r.JSON(200, utils.BcryptHash("admin888"))
	})
	// 用户相关
	initUserRoutes(r)
	// 公共接口
	initCommonRoutes(r)
	// 订单接口
	initOrderRoutes(r)
	// AI代理接口
	initAgentRoutes(r)
	initHomeRoutes(r)

	return r

}
func initHomeRoutes(r *gin.Engine) {
	u := r.Group("/home")
	u.Use(middleware.JWTAuth())
	{
		u.POST("index", handler.GetOrderStats) // 登录用户信息
	}

}
func initUserRoutes(r *gin.Engine) {
	u := r.Group("/admin")
	u.POST("login", admin.Login) // 登录
	u.Use(middleware.JWTAuth())
	{
		u.POST("info", admin.Info)                   // 登录用户信息
		u.POST("reset-password", admin.RestPassword) // 重制密码
		u.POST("del", admin.Del)                     // 删除用户
		u.POST("list", admin.List)                   // 用户列表
		u.POST("save", admin.Save)                   // 用户存储
		u.POST("change-status", admin.ChangeStatus)  // 更新用户状态
	}

}

func initCommonRoutes(r *gin.Engine) {
	p := r.Group("/public")
	p.Use(middleware.JWTAuth())
	{
		p.POST("upload", public.UploadFile)
	}
}
func initOrderRoutes(r *gin.Engine) {
	p := r.Group("/order")
	p.Use(middleware.JWTAuth())
	{
		p.POST("list", order.List)
		p.POST("info", order.Info)
		p.POST("save", order.Save)
		p.POST("cancel", order.Cancel)
		p.POST("complete", order.Complete)
		p.POST("shiped", order.Shipped)
		p.POST("upload", order.UploadAndParseExcel)
	}
}

func initAgentRoutes(r *gin.Engine) {
	a := r.Group("/agent")
	a.Use(middleware.JWTAuth())
	{
		a.POST("extract", agent.ExtractHandler)   // AI订单信息提取
		a.POST("extract-data", agent.ExtractData) // AI订单信息提取
	}
}
